Modern software programs often consume a substantial amount of time and/or resources (e.g., central processing unit (CPU) capabilities, input/output (PO capabilities, etc.) of machines on which the software programs execute. A variety of techniques have been proposed to reduce the amount of resources that software programs consume. However, each such technique has its limitations. For example, caching techniques has been developed that store content (or a reference to the content) in a local memory structure so that the content need not necessarily be read more than once. However, in accordance with such caching techniques, in order to determine whether such content has changed, the content typically is read. Thus, although caching techniques may serve to reduce the amount of resources consumed if the content is known to be unchanged, the benefit of such techniques is reduced when it is not known whether the content has changed. For instance, reading the content to determine whether the content has changed may consume substantial resources.
One type of software program that traditionally consumes a substantial amount of resources is an anti-malware program. Malware definitions (a.k.a. signatures) in anti-malware programs typically are updated relatively frequently, such as daily or multiple times per day, in an effort to protect against an ever-growing variety of malware. When an anti-malware program receives such an update, content traditionally is scanned even if the content has not changed so that a determination may be made as to whether one or more of the updated signatures match the content. Scanning the content upon each update of the signatures consumes substantial resources.